package com.atguigu.gmall.realtime.utils;

import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
import org.wltea.analyzer.lucene.IKAnalyzer;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

//IK分词工具类，将输入的字符串，可以通过只能切分，分成一个一个的字符串
public class KeyWordUtil {
    //ik分词器方法
    public static List<String> analyze(String text){
        //读取数据
        StringReader readerText = new StringReader(text);
        //创建一个iK分词器对象
        IKSegmenter ik = new IKSegmenter(readerText,true);
        //创建一个集合用来存放分词后的对象
        ArrayList<String> keyWordList = new ArrayList<>();

        Lexeme lex=null;
        //循环来获取输入得到分词器中的值，因为 ik.next不是布尔类型，所以无法进行next来判断是否存在下一个,
        //所以可以将其将其置空，当读取的下一个为null时候，就没有读取的值了
        while (true){
            try {
                if((lex=ik.next()) != null){
                    //获取数据
                    String lexemeText = lex.getLexemeText();
                    //System.out.println("获取的数据为:" + lexemeText);
                    //将获取的数据放入到list集合中
                    keyWordList.add(lexemeText);
                }else {
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
                new RuntimeException("获取分词器数据失败");
            }
        }
        return keyWordList;

    }

    public static void main(String[] args) {
        String text="Apple iPhoneXSMax (A2104) 256GB 深空灰色 移动联通电信4G手机 双卡双待";
        List<String> analyze = analyze(text);
        System.out.println("获取的整个集合为:"+analyze);
    }

}
